﻿namespace ConsoleApp;

//语法糖可以使代码更加简洁、易读和提高程序的运行效率。
public class DemoSyntacticSugar
{
    
    public void Demo()
    {
        //集合初始化器
        var names = new List<string> { "John", "Jane", "Alice" };
        //int[] numbers = { 1, 2, 3, 4, 5 };
        var numbers = new List<int> { 1, 2, 3, 4, 5 };
        
        //空合并运算符
        //string name = inputName ?? "Unknown";
        
        //条件访问运算符: 条件访问运算符允许我们在访问对象的属性或调用方法之前，先检查对象是否为null。它可以减少空引用异常的发生
        var text = "abcdafdafadf";
        var length = text?.Length;
        
        //字符串插值
        var name = "John";
        var age = 30;
        Console.WriteLine($"My name is {name} and I'm {age} years old.");
        
        //Lambda表达式
        var evenNumbers = numbers.Where(n => n % 2 == 0);
        
        //异步和等待 (Async/Await)
        
        //引用传递和值传递简化
        ref int GetReferenceToValue(ref int value)
        {
            return ref value;
        }
        var x = 5;
        ref var refX = ref GetReferenceToValue(ref x);
        refX = 10; // 修改了原始变量x的值
        
        //分部方法
        // partial void LogMessage(string message);
        // // 编译器
        // partial void LogMessage(string message)
        // {
        //     // 代码逻辑
        // }
        
        //类型模式的 switch
        // string result = obj switch
        // {
        //     string s => "它是string类型",
        //     int i => "他说int类型",
        //     _ => "未知类型"
        // };
        
        //扩展方法 允许我们向现有的类型添加新的方法，而无需修改原始类型的定义，提高了代码的可扩展性。
        //public static class StringExtensions
        // {
        //     public static bool IsPalindrome(this string str)
        //     {
        //         // 判断字符串是否为回文
        //     }
        // }
        // string text = "level";
        // bool isPalindrome = text.IsPalindrome();
    }
}